package com.jcroke.hercules.examples;

public abstract class DatumFunction {
	
	public void concat(Object val) throws DatumException {
		throw new DatumException("Unsupported operation for type " + this.getClass().getName());
	}

	public void add(Object val) throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}

	public void neg(Object val) throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}

	public boolean isNull() throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}

	public boolean isEmpty() throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}
	
	public boolean and(Object val) throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}
	
	public boolean or(Object val) throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}
	
	public boolean not(Object val) throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}
	
	public boolean not() throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}

	public void mul(Object val) throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}
	
	public void div(Object val) throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}

	public void mod(Object val) throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}

	public String toString() {
		return null;
	}

	public boolean lt(Object val) throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}

	public boolean ge(Object val) throws DatumException {
		throw new DatumException("Unsupported operation " + this.getClass().getName());
	}

	public void clear() {
	};

	public Class<?> getType() {
		return null;
	}

	public Object getValue() {
		return null;
	}
}
